﻿<template>
	<div>
		<el-form :inline="true" :model="formInline" class="user-search">
			<el-form-item label=""><el-input size="small" v-model="formInline.xuehao" placeholder="输入学号"></el-input></el-form-item>			<el-form-item label=""><el-input size="small" v-model="formInline.xingming" placeholder="输入姓名"></el-input></el-form-item>			<el-form-item   prop="zhuanye"><el-select size="small" v-model="formInline.zhuanye" placeholder="请选择"><el-option selected label="请选择" value=""></el-option><el-option v-for="item in zhuanyes" :key="item.zhuanyemingcheng" :label="item.zhuanyemingcheng" :value="item.zhuanyemingcheng"></el-option></el-select></el-form-item>			<el-form-item label=""><el-input size="small" v-model="formInline.xuenian" placeholder="输入学年"></el-input></el-form-item>			
			<el-form-item>
				<el-button size="small" type="warning" icon="el-icon-search" @click="search">搜索</el-button>
				<el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()" >添加</el-button>
				<el-button size="small" type="success" icon="el-icon-s-data" @click="daochu()" v-if="userInfo.roles[0] == 'guanliyuan'">导出</el-button>
				<el-button size="small" type="danger" icon="el-icon-delete" @click="handleDeleteList()" v-if="userInfo.roles[0] == 'guanliyuan'">批量删除</el-button>
				
			</el-form-item>
			<el-form-item>
				<el-upload class="upload-demo" style="float: left; padding-right: 10px;" action='http://localhost:9999/chengji/upload' :headers='headers' :show-file-list='false' :on-success='handleDaoruSuccess' :before-upload='beforeDaoruUpload' ><el-button size="small" type="info" icon="el-icon-sell" v-if="userInfo.roles[0] == 'guanliyuan'">导入</el-button></el-upload>
			</el-form-item>
		</el-form>
		
		<el-table size="small" :data="listData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" @selection-change="handleSelectionChange">
			<el-table-column align="center" type="selection" width="60"></el-table-column>
			<el-table-column sortable prop="xuehao" label="学号"></el-table-column>			<el-table-column sortable prop="xingming" label="姓名"></el-table-column>			<el-table-column sortable prop="yuanxi" label="院系"></el-table-column>			<el-table-column sortable prop="banji" label="班级"></el-table-column>			<el-table-column sortable prop="zhuanye" label="专业"></el-table-column>			<el-table-column sortable prop="xuenian" label="学年"></el-table-column>			<el-table-column sortable prop="qudechengji" label="取得成绩">
			</el-table-column>
			<el-table-column label="获得奖项" prop="award">
			<template #default="scope">
				    <el-tag  color="#CD7F32" style="color: white;" v-if="scope.row.award && scope.row.award.length > 0">{{scope.row.award}}</el-tag>
					<el-tag v-else type="warning">
						奖项待设置
					</el-tag>
			</template>
			</el-table-column>
			
			<el-table-column sortable prop="addtime" label="添加时间" width="160">
				<template slot-scope="scope">
					<div>{{scope.row.addtime|datePipe('yyyy-MM-dd hh:mm:ss')}}</div>
				</template>
			</el-table-column>
			
			<el-table-column align="center" label="操作" min-width="160">
				<template slot-scope="scope">
					
					<!--liangbuan-->
					<el-button size="mini" type="success" @click="handleEdit(scope.$index, scope.row)" v-if="userInfo.roles[0] == 'guanliyuan'  || userInfo.roles[0] == 'xuesheng'">编辑</el-button>
					<el-button size="mini" type="danger" @click="deleteChengji(scope.$index, scope.row)" v-if="userInfo.roles[0] == 'guanliyuan'  || userInfo.roles[0] == 'xuesheng'">删除</el-button>
					<el-button size='mini' type='primary' @click="handleDetail(scope.$index, scope.row)">详细</el-button>
					<!--zhixfuanniu-->
					
				</template>
			</el-table-column>
		</el-table>
		<Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination>
		
		<el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="closeDialog">
			<el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm">
				<el-form-item  label='学号' prop='xuehao'><el-select size='small' v-model='editForm.xuehao' placeholder='请选择学号' @change="hsgxia2suixuehao"><el-option selected label='请选择学号' value=''></el-option><el-option v-for="item in xueshengs" :key="item.xuehao" :label="item.xuehao" :value="item.xuehao"></el-option></el-select></el-form-item>		<el-form-item  label="姓名" prop="xingming"><el-input size="small" v-model="editForm.xingming" auto-complete="off" placeholder="" style='width:50%' disabled></el-input></el-form-item>		<el-form-item  label="院系" prop="yuanxi"><el-input size="small" v-model="editForm.yuanxi" auto-complete="off" placeholder="" style='width:50%' disabled></el-input></el-form-item>		<el-form-item  label="班级" prop="banji"><el-input size="small" v-model="editForm.banji" auto-complete="off" placeholder="" style='width:50%' disabled></el-input></el-form-item>		<el-form-item  label='专业' prop="zhuanye"><el-select size="small" v-model="editForm.zhuanye" placeholder="请选择"><el-option selected label="请选择" value=""></el-option><el-option v-for="item in zhuanyes" :key="item.zhuanyemingcheng" :label="item.zhuanyemingcheng" :value="item.zhuanyemingcheng"></el-option></el-select></el-form-item>		<el-form-item  label="学年" prop="xuenian"><el-input size="small" v-model="editForm.xuenian" auto-complete="off" placeholder="请输入学年" style='width:50%'></el-input></el-form-item>		<el-form-item  label="取得成绩" prop="qudechengji"><el-input-number size="small" v-model="editForm.qudechengji" auto-complete="off" placeholder="请输入取得成绩" style='width:50%'></el-input-number></el-form-item>
		<el-form-item  label="获得奖项" prop="award"><el-input size="small" v-model="editForm.award" auto-complete="off" placeholder="请输入获得奖项" style='width:50%'></el-input></el-form-item>		<el-form-item  label="备注" prop="beizhu"><el-input type="textarea" size="small" v-model="editForm.beizhu" auto-complete="off" placeholder="请输入备注" style='width:100%'></el-input></el-form-item>		
				
			</el-form>
			<div slot="footer" class="dialog-footer">
				<el-button size="small" @click="closeDialog">取消</el-button>
				<el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button>
			</div>
		</el-dialog>
			
			
			<!--xiangxidhk-->
			<!--zhixfudhk-->
	</div>
</template>

<script>
import Pagination from "@/layout/pagination/Pagination";
import { chengjiList, chengjiSave, chengjiDelete,chengjiEdit,chengjiDeleteList } from '@/api/chengji/chengjiApi';
import {xueshengAllList,xueshengList} from "@/api/xuesheng/xueshengApi";import {zhuanyeAllList,zhuanyeList} from "@/api/zhuanye/zhuanyeApi";				

import {Session} from "@/utils/storage";
import axios from 'axios';
export default {
	name: 'user',
	data() {
		return {
			loading: false, //是显示加载
			title: '',
			
			editFormVisible: false, //控制编辑页面显示与隐藏
			payVisible: false,
			tempdingdanxinxi: '',
			id: '',
			radio: '',
			//detaitFormVsisisble
			
			
			
			editForm: {
			},
			user:[],
			username:'',
			cx:'',
			xueshengs:[],				zhuanyes:[],				
			rules: {
				xuehao: [{ required: true, message: '请输入学号', trigger: 'blur' },				],				xingming: [{ required: true, message: '请输入姓名', trigger: 'blur' },				],				qudechengji: [{ type: 'number', message: '取得成绩必须为数字'},				],				jingsaihuojiangrenshu: [{ type: 'number', message: '竞赛获奖人数必须为数字'},				],				shengjihuojiangrenshu: [{ type: 'number', message: '省级获奖人数必须为数字'},				],				guojiajirenshu: [{ type: 'number', message: '国家级人数必须为数字'},				],				
			},
			
			formInline: {
				page: 1,
				limit: 10,
			},
			
			
			listData: [],
			chengjis:[],
			
			checkmenu: [],
			pageparm: {
				currentPage: 1,
				pageSize: 10,
				total: 0
			}
		};
	},
	computed:{
		headers(){
			return {"token":Session.get("token")}
		}
	},
	watch: {
			'$route' (to, from) {
				// 路由发生变化页面刷新
				this.$router.go(0);
			}
		},
	components: {
		Pagination
	},
	created() {
		
		if (!Session.get('userInfo')) return false;
		this.userInfo = Session.get('userInfo');
		this.username=localStorage.getItem("username");
		this.cx=localStorage.getItem("cx");
		if(this.userInfo.roles[0] == 'xuesheng'){this.formInline.xuehao= this.username;}		
		this.getdata(this.formInline)
		this.getAllxuesheng({});				this.getAllzhuanye({});				
	},
	methods: {
		
		//zxhifuff
		handleShenheList(){
				const chengjis = this.chengjis;
				if(chengjis.length == 0){
					this.$message({
						type: 'error',
						message: '请至少选择一项'
					})
				}else {
					this.$confirm('确定要批量审核吗?', '信息', {
						confirmButtonText: '确定',
						cancelButtonText: '取消',
						type: 'warning'
					}).then(() => {
						chengjis.forEach(item=> {
							let data = {...item, issh: 1}
							chengjiEdit(data).then(res => {})
						})
						this.getdata(this.formInline)
						this.$message({
							type: 'success',
							message: '批量审核成功！'
						})
					}).catch(() => {
						this.$message({
							type: 'info',
							message: '已取消批量审核'
						})
					})
				}
			},
		getdata(parameter) {
			chengjiList(parameter)
					.then(res => {
						this.loading = false
						if (res.success == false) {
							this.$message({
								type: 'info',
								message: res.msg
							})
						} else {
							this.listData = res.data.list
							
							
							
							// 分页赋值
							this.pageparm.currentPage = this.formInline.current
							this.pageparm.pageSize = this.formInline.currentNum
							this.pageparm.total = res.data.total
						}
					})
					.catch(err => {
						this.loading = false
						this.$message.error('菜单加载失败，请稍后再试！')
					})
		},
		
		// 分页插件事件
		callFather(parm) {
			this.formInline.current = parm.currentPage
			this.getdata(this.formInline)
		},
		hsgxia2suixuehao(){
			let xuehao = this.editForm.xuehao;
			this.xueshengs.forEach(item=>{
				if(item.xuehao == xuehao){
					this.editForm.xingming = item.xingming					this.editForm.yuanxi = item.yuanxi					this.editForm.banji = item.banji					
					
					this.$forceUpdate()
				}
			})
		},
		// 搜索事件
		search() {
			this.getdata(this.formInline)
		},
		//显示编辑界面
		handleEdit: function (index, row) {
			this.editFormVisible = true
			if (row != undefined && row != 'undefined') {
				this.title = '修改成绩'
				this.editForm = row
			} else {
				this.title = '添加成绩'
				this.editForm = {}
				
				
				//zixdonxgbianxhao1
			}
		},
		daochu(){
			axios.get('/chengji/getExcel', {
				responseType: 'blob',
				headers: { token: Session.get("token"), 'Content-Type': 'application/x-download' }
			}).then((res) => {
				if (res.status === 200) {
					var a = document.createElement('a')
					var blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
					var href = window.URL.createObjectURL(blob)
					a.href = href
					a.download = '成绩.xlsx'
					document.body.appendChild(a)
					a.click() 
					document.body.removeChild(a) 
					window.URL.revokeObjectURL(href)
				}
			}).catch((err) => {
				console.log(err)
			})
		},
		handleDaoruSuccess(res, file) {
				if(res.code == "0") {
					this.$message({
						type: 'success',
						message: '导入成功!'
					})
					this.getdata(this.formInline);
				}
			},
		beforeDaoruUpload(file) {
			const isJPG = file.type === 'application/vnd.ms-excel';
			if (!isJPG) {
				this.$message.error('上传只能是 excel 格式!');
			}
			return isJPG;
		},
		//zixdonxgbianxhao2
		
		handleDetail(index, row) {const w = window.open("about:blank");w.location.href = 'http://localhost:8080/#/chengjidetail/'+row.id;},
		//liangbuedit
		// 编辑、增加页面保存方法
		submitForm(editData) {
			
			this.$refs[editData].validate(valid => {
				if (valid) {
					if(this.editForm.id){
						chengjiEdit(this.editForm).then(res => {
							this.editFormVisible = false
							
							this.loading = false
							if (res.code == '0') {
								this.getdata(this.formInline)
								this.$message({
									type: 'success',
									message: '成绩修改成功！'
								})
							} else {
								this.$message({
									type: 'info',
									message: res.msg
								})
							}
						}).catch(err => {
							this.editFormVisible = false
							this.loading = false
							this.getdata(this.formInline)
						if(err){
								this.$message.error(err)
							}else {
								this.$message.error('操作失败，请稍后再试！')
							}
						})
					}else {
						chengjiSave(this.editForm).then(res => {
							this.editFormVisible = false
							this.loading = false
							if (res.code == '0') {
								
								this.getdata(this.formInline)
								this.$message({
									type: 'success',
									message: '成绩添加成功！'
								})
							} else {
								this.$message({
									type: 'info',
									message: res.msg
								})
							}
						}).catch(err => {
							this.editFormVisible = false
							this.loading = false
						if(err){
								this.$message.error(err)
							}else {
								this.$message.error('操作失败，请稍后再试！')
							}
						})
					}
				} else {
					return false
				}
			})
		},
		// 删除公司
		deleteChengji(index, row) {
			this.$confirm('确定要删除吗?', '信息', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				chengjiDelete(row.id).then(res => {
					if (res.code == '0') {
						this.$message({
								type: 'success',
							message: '成绩已删除!'
						})
						this.getdata(this.formInline)
					} else {
						this.$message({
							type: 'info',
							message: res.msg
						})
					}
				}).catch(err => {
					this.loading = false
					this.$message.error('操作失败，请稍后再试')
				})
			}).catch(() => {
				this.$message({
					type: 'info',
					message: '已取消删除'
				})
			})
		},
		handleSelectionChange(val){
			this.chengjis = val;
		},
		handleDeleteList(){
			const chengjis = this.chengjis;
			if(chengjis.length == 0){
				this.$message({
					type: 'error',
					message: '请至少选择一项进行删除'
				})
			}else {
				this.$confirm('确定要批量删除吗?', '信息', {
					confirmButtonText: '确定',
					cancelButtonText: '取消',
					type: 'warning'
				}).then(() => {
					chengjiDeleteList(chengjis).then(res => {
						if (res.code == '0') {
							this.$message({
								type: 'success',
								message: '批量删除成功!'
							})
							this.getdata(this.formInline)
						} else {
							this.$message({
								type: 'info',
								message: res.msg
							})
						}
					}).catch(err => {
						this.loading = false
						this.$message.error('操作失败，请稍后再试')
					})
				}).catch(() => {
					this.$message({
						type: 'info',
						message: '已取消删除'
					})
				})
			}
		},
		//xuaxnzeshxifou
		
		
		getAllxuesheng(parameter){xueshengList(parameter).then(res=>{if(res.code == '0'){this.xueshengs = res.data.list}})},				getAllzhuanye(parameter){zhuanyeList(parameter).then(res=>{if(res.code == '0'){this.zhuanyes = res.data.list}})},				
		
		//youscwexnjiaxn
		// 关闭编辑、增加弹出框
		closeDialog() {
			this.getdata(this.formInline)
			this.editFormVisible = false
		}
	},
};
</script>

<style scoped lang="scss">
	@import './index.scss';
</style>
